/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package business;

import entity.EveAreaTematica;
import java.security.InvalidParameterException;
import java.text.SimpleDateFormat;
import java.util.Collection;
import java.util.Date;
import java.util.Iterator;
import java.util.List;
import javax.ejb.Stateless;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import javax.persistence.Query;

/**
 *
 * @author uel
 */
@Stateless
public class PropostaSessionBean implements PropostaSessionLocal {
    @PersistenceContext
    private EntityManager em;

    private EveAreaTematica[] listaAreaTematica;

    private Collection<EveAreaTematica> colecaoAreaTematica;

    public void persist(Object object) {
        em.persist(object);
    }

    /**
     *
     * @param EveAreaTematica entity
     * @return retorna FALSE se entidade nula e TRUE se entidade for não nula.
     */
    public boolean isNull(EveAreaTematica areaTematica) {
        if(areaTematica == null){
            return true;
        }else{
            return false;
        }
    }

    /**
     *
     * @param areaTematica entidade
     * @return retorna FALSE se ocorrer erro, e TRUE se der certo.
     */
    public boolean insertAreaTematica(EveAreaTematica areaTematica) {
        Date hoje = new Date(); 
        String formato = "dd/MM/yyyy";
        SimpleDateFormat formatter = new SimpleDateFormat(formato);
        System.out.println("A data formatada é: "+ formatter.format(hoje));

        if (this.isNull(areaTematica)) {
            //se nulo retorna uma exceção
            throw new InvalidParameterException();
        }

     
        EveAreaTematica entidadep =
                new EveAreaTematica(getMaxMaisUm(), "adaniya", hoje);
        entidadep.setDesAreaTematica(areaTematica.getDesAreaTematica());

        // este método persiste a entidade que foi invocada pela camada de apresentação
        em.persist(entidadep);
        em.flush();

        return true;
        
    }

    public EveAreaTematica getAreaByID(Integer codigo) throws InvalidParameterException {
        EveAreaTematica tematica;
        Query query = (Query) em.createNamedQuery("EveAreaTematica.findByCodAreaTematica");

        query.setParameter("codAreaTematica", codigo);

        tematica = (EveAreaTematica) query.getSingleResult();

        return tematica;
    }



    /**
     * 
     * @return retorna o último ID da tabela.
     */
    private Integer getMaxMaisUm() {
        Query query = (Query) em.createNamedQuery("EveAreaTematica.findMax");
        Integer id = (Integer) query.getSingleResult();
        if (id != null) {
            return id + 1;  
        }
        return 1;
    }

    /**
     *
     * @return retorna a lista de TODAS as areas temáticas cadastradas.
     */
    public EveAreaTematica[] getAllAreaTematica() {
        Query query = (Query) em.createNamedQuery("EveAreaTematica.findAll");

        this.listaAreaTematica = (EveAreaTematica[]) query.getResultList().toArray(new EveAreaTematica[0]);

        return this.listaAreaTematica;
    }

    public Collection<EveAreaTematica> getColecaoAreaTematica() {
        return colecaoAreaTematica;
    }

    public void setColecaoAreaTematica(List<EveAreaTematica> colecaoAreaTematica) {
        this.colecaoAreaTematica = colecaoAreaTematica;
    }

    public EveAreaTematica[] getListaAreaTematica() {
        return listaAreaTematica;
    }

    public void setListaAreaTematica(EveAreaTematica[] listaAreaTematica) {
        this.listaAreaTematica = listaAreaTematica;
    }




}
